package de.rs.espresso.cubes;

import java.util.List;

import de.rs.espresso.algorithms.model.FreeSet;
import de.rs.espresso.interfaces.ICover;
import de.rs.espresso.interfaces.ICube;
import de.rs.espresso.interfaces.IGlobalInformation;

public class ByteArrayCube implements ICube, Cloneable {
	
	private byte[] outputs;
	private byte[] inputs;
	private IGlobalInformation info;

	public ByteArrayCube(byte[] inputs, byte[] outputs, IGlobalInformation info) {
		this.inputs = inputs;
		this.outputs = outputs;
		this.info = info;
	}

	public ByteArrayCube(List<Byte> inputs, List<Byte> outputs) {
		//TODO
	}

	public ICube clone() {
		return new ByteArrayCube(inputs,outputs, info);	
	}

	@Override
	public boolean isVoid() {
		for(int i = 0; i < inputs.length; i++)
			if(inputs[i]==VOID)
				return true;
		return false;
	}

	@Override
	public boolean isTautology() {
		for(int i = 0; i < inputs.length; i++)
			if(inputs[i]!=DONT_CARE)
				return false;
		return true;
	}

	@Override
	public ICube getSupercube(ICube otherCube) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void raisePart(int position) {
		// TODO Auto-generated method stub

	}

	@Override
	public void lowerPart(int position) {
		// TODO Auto-generated method stub

	}

	@Override
	public int getNumberOfLiterals() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int[] addToColumnCount(int[] columnCount) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int getCubeWeight(int[] columnCount) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int getDistance(ICube otherCube) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public boolean isPartSet(int position) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean intersectAt(ICube otherCube, int position) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean isVoidAt(int position) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public FreeSet getFreeSet() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean covers(ICube otherCube) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public ICube getOverexpandedCube(FreeSet fSet) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public ICube getCofactor(ICube cube) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public ICube or(ICube cube) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public ICube and(ICube cube) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public byte getLiteral(int position) {
		// TODO Auto-generated method stub
		return 0;
	}



	@Override
	public int countDontCares() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int[][] addToDirectNegatedCount(int[][] directNegatedCount) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void setLiteral(int position, byte value) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public int getNumberOfOutputs() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public byte getOutput(int position) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void setOutput(int position, byte value) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public ICover getComplement() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean isAlreadyExpanded() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void setAlreadyExpanded(boolean isAlreadyExpanded) {
		// TODO Auto-generated method stub

	}

	@Override
	public String getBlifString() {
		// TODO Auto-generated method stub
		return null;
	}

}
